const Address = require("../model/addr.model");
const { invalidAddressId } = require("../constant/error.type");

/**
 * 检验地址是否存在
 * @param {*} ctx 请求上下文
 * @param {*} next 放行函数
 */
const verifyAddressId = async (ctx, next) => {
  const user_id = ctx.state.user.id;
  const id = ctx.request.params.id;
  const address = await Address.findOne({ where: { id, user_id } });
  // 如果用户不存在该地址，返回错误
  if (address === null) {
    return ctx.app.emit("error", invalidAddressId, ctx);
  }
  // 检验通过，交由下一个中间件处理
  await next();
};

module.exports = { verifyAddressId };
